package com.fh.modules.dbms.service;

import com.fh.common.web.AbstractService;
import com.fh.db.DbTable;
import com.fh.modules.dbms.entity.DbmsTable;
import com.fh.modules.dbms.model.CompareResultModel;
import com.fh.modules.dbms.model.TableCompareResult;

import java.util.List;

/**
 * @Author qiujunda
 * @Date 23/07/2020
 * @Description
 */
public interface IDbmsTableService  extends AbstractService<DbmsTable> {

    /**
     *  新增或修改
     * @param dbTable dbCollector 来的数据
     * @param sourceId 数据源ID
     * @param collectSid 采集sessionId
     * @return
     */
    DbmsTable addOrUpdateDbmsTable(DbTable dbTable, Long sourceId, String collectSid);

    /**
     * 根据表名查询实体对象
     * @param sourceId
     * @param tableName 必填
     * @return
     */
    DbmsTable queryDbmsTable(Long sourceId, String tableName);

    /**
     * 对比两个表，并得到对比结果
     * @param dbmsTable
     * @param dbmsTableDes
     * @return
     */
    TableCompareResult compareTable(DbmsTable dbmsTable, DbmsTable dbmsTableDes);

    /**
     * 对比两个数据源的所有表
     * @param sourceId1
     * @param sourceId2
     * @param tableName
     * @param diff
     * @return
     */
    List<TableCompareResult> compareTable(Long sourceId1, Long sourceId2, String tableName, Integer diff);

    /**
     * 查询两个数据源表的字段差异结果详细内容
     * @param dbmsTable1
     * @param dbmsTable2
     * @return
     */
    CompareResultModel queryTableColumnContent(DbmsTable dbmsTable1, DbmsTable dbmsTable2);

    /**
     * 查询两个数据源表的索引差异结果详细内容
     * @param dbmsTable1
     * @param dbmsTable2
     * @return
     */
    CompareResultModel queryTableIndexContent(DbmsTable dbmsTable1, DbmsTable dbmsTable2);
}
